In many sectors, field representatives are used to educate customers and potential customers on the products of manufacturers and service providers. In the course of their duties, sales representatives make site visits and build a relationship with the customers and potential customers in their assigned territory. Typically, field representatives maintain records of their visits in accordance with any guidelines or requirements of the companies that they represent. The records of site visits can include details and have formats that vary widely among representatives and the companies they represent. The data collected by field representatives is typically aggregated in a centralized repository such as a database server so that the data can be analyzed. Additionally, the centralized repository commonly redistributes information or provides additional information, such as analysis of the data, to the field representatives. This data collection and distribution is typically performed using a client-server database architecture.
As the number of field representatives increases, the performance and scalability of typical client-server database models can degrade, and in some cases render the system inoperable. These performance issues are especially problematic when multiple clients simultaneously attempt to synchronize with the server. Multiple simultaneous client connections are common in environments in which clients synchronize during their “down-time” (e.g., overnight, when the user is not visiting sites and entering data), because users typically have similar schedules.
The performance and scalability degradation results from several factors. In a client-server model, database query optimizers do not predictably perform transactions on the client or the server. This can result in a great discrepancy in the amount of data transmitted over the network compared to the amount of data that is actually required to be modified or added. For example, during synchronization, the client may need to insert only a few new records into the tables on the database server. However, rather than transmitting the few records from the client to the server, the server may transmit the entire table to the client, perform the insertion on the client, and then transmit the table back to the server. Such a transaction greatly increases the quantity of data transmitted over the network, and can lock the entire database server until the transaction is complete, thereby preventing another client from synchronizing at the same time.
Some systems have attempted to address this problem by creating additional infrastructure external to the client-server database. For example, the synchronizing machine can create a queue into which the new or modified records are inserted. The queue is then processed by transmitting each record to the other machine where it is processed. This approach is limited by the additional processing time that is required during execution because it is built on-top-of the database and because it requires sequential processing of the queue rather than taking advantage of the built-in services of the database.
The present invention addresses these deficiencies in the art and provides other improvements useful to the synchronization of client-server databases.